import lombok.ToString;

/**
 * @author zhaoren
 * @version 1.0
 * @description 维护一个ConcreteState子类的实例，这个实例定义当前的状态
 * @date 2020/8/10 9:52
 **/

@ToString
public class Context {

    private State state;

    public Context(State state){
        this.state = state;
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }

    /**
     * 对请求做处理，并设置下一状态,这个就好比一大串的分支语句里面的语句体，当一个状态不满足即转入下一个状态
     * 而状态模式我的理解就是将各个分支语句体变成状态类的形式，由具体的类来维护相关的逻辑判断，当改类的逻辑判断完成
     * 或者不符合即转入下一个相应的状态
     */
    public void request(){
        state.handle(this);
    }
}
